// function getIndex(bool: boolean) {
//   return new Promise((resolve, reject) => {
//     setTimeout(() => {
//       if (bool) {
//         resolve('a')
//       } else {
//         reject(Error('error'))
//       }
//     }, 1000)
//   })
// }

// getIndex(true).then((res) => {
//   console.log(res);  
// }).catch((err) => {
//   console.log(err);  
// })

// async function asyncFunction() {
//   const res = await getIndex(true)
//   console.log(res);  
// }

// asyncFunction()

// interface Res {
//   data: {
//     [key: string] : any,
//   }
// }

// namespace axios {
//   export function post(url: string, config: object): Promise<Res> {
//     return new Promise((resolve, reject) => {
//       setTimeout(() => {
//         let res: Res = { data: {}}
//         if (url === '/login') {
//           res.data.user_id = 111          
//         } else {
//           res.data.role = 'admin'
//         }
//         console.log(2);
        
//         resolve(res)
//       })
//     })
//   }
// }

// interface Info {
//   user_name: string;
//   password: string;
// }

// async function loginReq({user_name, password}: Info) {
//   try {
//     console.log(1);
//     const res = await axios.post('/login', {
//       data: {
//         user_name,
//         password
//       }
//     })
//     console.log(3);
//     return res
//   } catch (error) {
//       throw new Error(error)
//   }
// }

// async function getRoleReq(user_id: number) {
//   try {
//     const res = await axios.post('user_roles', {
//       data: {
//         user_id
//       }
//     })
//     return res
//   } catch (error) {
//     throw new Error(error)
//   }
// }


// loginReq({user_name: 'lison', password: '123'}).then((res) => {
//   const { data: { user_id}} = res

//   getRoleReq(user_id).then((res) => {
//     const { data: {role} } = res
//     console.log(role);
//   })
// })


// 动态导入  import('moment').then((res) => {})  返回的是一个promise

function getExcludeProp<T extends { props: string}>(obj: T) {
  const { props, ...rest } = obj
  return rest
}

const objInfo = {
  props: 'something',
  name: 'lison',
  age: 18
}

console.log(getExcludeProp(objInfo));
